在我的代码中,我根据_并抓取数组中的第二项来拆分字符串。
_
var element = $(this).attr('class'); var field = element.split('_')[1];
接受good_luck并提供给我luck。效果很好!
good_luck
luck
但是,现在我有一个看起来像good_luck_buddy. 如何让我的 javascript 忽略第二个_并给我luck_buddy?
good_luck_buddy
luck_buddy
我var field = element.split(new char [] {'_'}, 2);在 ac# stackoverflow 答案中找到了这个,但它不起作用。我在 jsFiddle 上试过了…
var field = element.split(new char [] {'_'}, 2);
使用捕获括号:
'good_luck_buddy'.split(/_(.*)/s) ['good', 'luck_buddy', ''] // ignore the third element
它们被定义为
如果separator包含捕获括号,则在数组中返回匹配的结果。
separator
因此,在这种情况下,我们希望在_.*(即,分割分隔符是一个以 开头的子字符串_)进行拆分, 但还要 让结果包含我们的分隔符的某些部分(即,之后的 所有内容_)。
_.*
在这个例子中,我们的分隔符(匹配_(.*))是_luck_buddy,捕获的组(在分隔符内)是lucky_buddy。如果没有捕获括号,luck_buddy(matching .*) 将不会包含在结果数组中,因为简单的情况split是分隔符不包含在结果中。
_(.*)
_luck_buddy
lucky_buddy
.*
split
我们也使用s正则表达式标志来.匹配换行符 ( \n) 字符,否则它只会拆分到第一个换行符。
s
.
\n